]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
status/network: Use bindings to update VPN indicator
authorFlorian Müllner <fmuellner@gnome.org>
Wed, 3 Aug 2022 02:11:15 +0000 (04:11 +0200)
committerMarge Bot <marge-bot@gnome.org>
Wed, 10 Aug 2022 16:37:15 +0000 (16:37 +0000)
Now that the VPN section is a GObject, we can set up proper bindings
for icon-name and visibility.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2408>

js/ui/status/network.js

index 5212698e03cf695fb5c020fd2ad74743c0bb953b..e9ea5c05e32350de380b6be1df1f9d5db3306fab 100644 (file)
@@ -1528,14 +1528,6 @@ class NMVpnSection extends NMSection {
     deactivateConnection(activeConnection) {
         this._client.deactivate_connection(activeConnection, null);
     }
-
-    getIndicatorIcon() {
-        for (const item of this._items.values()) {
-            if (item.is_active)
-                return item.icon_name;
-        }
-        return '';
-    }
 });
 
 const NMDeviceSection = GObject.registerClass(
@@ -1746,9 +1738,6 @@ class Indicator extends PanelMenu.SystemIndicator {
     _init() {
         super._init();
 
-        this._primaryIndicator = this._addIndicator();
-        this._vpnIndicator = this._addIndicator();
-
         this._connectivityQueue = new Set();
 
         this._mainConnection = null;
@@ -1780,6 +1769,16 @@ class Indicator extends PanelMenu.SystemIndicator {
             this.menu.addMenuItem(section.menu);
         });
 
+        this._primaryIndicator = this._addIndicator();
+        this._vpnIndicator = this._addIndicator();
+
+        this._vpnSection.bind_property('checked',
+            this._vpnIndicator, 'visible',
+            GObject.BindingFlags.SYNC_CREATE);
+        this._vpnSection.bind_property('icon-name',
+            this._vpnIndicator, 'icon-name',
+            GObject.BindingFlags.SYNC_CREATE);
+
         this._getClient().catch(logError);
     }
 
@@ -1983,8 +1982,5 @@ class Indicator extends PanelMenu.SystemIndicator {
                     this._primaryIndicator.icon_name = 'network-wired-no-route-symbolic';
             }
         }
-
-        this._vpnIndicator.icon_name = this._vpnSection.getIndicatorIcon();
-        this._vpnIndicator.visible = this._vpnIndicator.icon_name !== null;
     }
 });